#pragma once

#include "igamestate.h"
#include "../Muzzy A Wrappers/TextFont.h"
#include "../Muzzy A Wrappers/BitmapFont.h"
#include "../Geometry.h"


// Forward Declarations
class D3DManager;
class TextureManager;
class DirectInput;
class SoundManager;
class Game;
class Timer;
class Camera;
class GameCursor;
class Renderer;
class ObjectManager;

enum MessageID;
//


class GamePlayState : public IGameState
{
	//////////////////////////////////////////////////////////////////////////
	// Game play state
	Geometry *g;
	Geometry *g1;
	Matrix m;

public:
	static GamePlayState* getInstance();

	virtual void Enter();
	virtual void Exit();

	virtual void Render();
	virtual void Update();
	virtual void Input();

private:
	// Singleton
	GamePlayState(void);
	GamePlayState(const GamePlayState&);
	virtual ~GamePlayState(void);
	GamePlayState& operator =(const GamePlayState&);


	static void MessageProc(MessageID msg);

	// Access to system calls
	D3DManager		*d3dManager;
	TextureManager	*textureManager;
	DirectInput		*input;
	SoundManager	*soundManager;
	Game			*pGame;
	Timer			*time;
	Camera			*cam;
	GameCursor		*cursor;
	Renderer		*renderer;
	ObjectManager	*objManager;
	//
};

